﻿using System.Collections.Generic;
using GisFramework.Data;

namespace GisFramework.Interfaces.Services
{
	/// <summary>
	/// Сервис получения данных из информационной системы, с которой осуществляется интеграция
	/// Получение данных может быть реализовано как прямым доступом к таблицам, так и вызовом хранимой процедуры
	/// </summary>
	/// <typeparam name="TSourceDomain">Тип объекта, который возвращается из информационной системы. Может быть без вложенных объектов или со сложной структурой</typeparam>
	public interface ISourceService<TSourceDomain>
	{
		/// <summary>
		/// Возвращает список объектов, которые необходимо отправить в ГИС ЖКХ
		/// Для отправки данных в ГИС ЖКХ обязательно должна быть проведена проверка, что по этим данным не существует доменных сообщений в статусе Новое, В обработке.
		/// Например, для получения информации о доме нужно вернуть список ФИАС номеров домов. А для загрузки лицевых счетов нужно вернуть, собственно, лицевые счета.
		/// Данных должно быть достаточно для создания доменных сообщений
		/// </summary>
		/// <param name="coreInitData"></param>
		/// <returns></returns>
		List<TSourceDomain> GetSourceDomains(CoreInitData coreInitData);
	}
}